from typing import Literal

class BaseModel:
    def __init__(self, config: dict):
        self.config = config

    def bind_tools(self, tools):
        self.tools = tools

    def agent_calls(self, text, image, prompt):
        pass

# class ImageDescriptionInstructions(OpenAIBaseModel):
#     """
#     Instruction of image-description task output.
#     该数据结构用于图片文本内容描述任务的输出模板，其中包含两个字段，type代表该图片类型的推理，如果推测该图片是ppt的符号图形，则为'ppt'，否则为'img'
#     description存放任务输出的图片文本内容描述信息
#     """
#     type: Literal['ppt', 'img']
#     description: str
#
# # 定义段落模块数据结构
# class PeriodInstructions(TypedDict):
#     """
#      Instruction of representing paragraph content. Image identifier when type='img'
#      Attributes:
#         type (Literal['txt', 'img']): Content type discriminator
#             - 'txt': Indicates a text paragraph
#             - 'img': Indicates an image paragraph
#         content (str): The actual content payload
#             - For type='txt': Contains the text string
#             - For type='img': Contains the image resource identifier
#
#     Examples:
#         - text_block = Paragraph(type='txt', content='Lorem ipsum')
#         - image_block = Paragraph(type='img', content='fig_001.png')
#     """
#     type: Literal['txt', 'img']
#     content: str
#
# # 定义生成产品推荐手册文本对象数据结构
# class PrdtDocInstructions(OpenAIBaseModel):
#     """
#     Instruction of Product recommendation manual document content.
#     Each member variable is implemented as a list, where the list order determines the final paragraph sequence in the
#     generated document.
#     """
#     general_introduction: list[PeriodInstructions]
#     core_functions_introduction: list[PeriodInstructions]
#     case_analysis: list[PeriodInstructions]
#     docking_process: list[PeriodInstructions]
#
#
# class PrdtDocInstruct(TypedDict):
#     type: Literal['title', 'txt', 'img']
#     content: str
#     sub_obj: Optional[list['PrdtDocInstruct']]